Field
Rendering photo-realistic 2-D images from 3-D scene descriptions with ray tracing is well-known in the computer graphics arts. Ray tracing is known to produce photo-realistic images, including realistic shadow and lighting effects, because ray tracing can model the physical behavior of light interacting with elements of a scene. Ray tracing usually involves obtaining a scene description composed of geometric shapes, which describe surfaces of structures in the scene, and can be called primitives. A common primitive shape is a triangle. Objects can be composed of one or more such primitives. Objects can be composed of many thousands, or even millions of such primitives. Scenes typically contain many objects. Resolution of displays and the media to be displayed thereon continue to increase. Ray tracing requires repeating a few calculations many times with different data (e.g. intersection testing), as well as executing special purpose code (“shading”) for identified ray intersections.
Ray tracing calculations can be parallelized relatively easily at the level of pixels of a frame being rendered, because a great many of these calculations are independent of each other, or have well-characterized dependencies. However, other portions of the calculation are not so easily parallelized. More broadly, ray tracing is an example work load among a variety of workloads that can benefit from practical increases in processing throughput. As such, provision of different computing architectures and components thereof continues to be an active area research and development in furtherance of such goals.